home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Epic Collection
/
Epic Collection, The (Epic Marketing)(1996).iso
/
lsdtools
/
lsd120.dms
/
lsd120.adf
/
docs
/
Huntwindows.doc.pp
/
Huntwindows.doc
Wrap
Text File
|
1990-09-13
|
10KB
|
246 lines
Huntwindows V3.1 by Jörg Bublath
================================
Some options may have changed to earlier versions - please check this out!
COPYRIGHT:
Huntwindows is freely distributable.
Huntwindows is free to be spread on public-domain and shareware disks
especially on Fred Fish's AmigaLibDisks, as long as they are sold for a
reasonable charge that is less than US $6 or DM 8.- .
For use in commercial products the permission of the author is required.
Huntwindows may be copied and distributed via electronic networks such
as the Internet, also it may be moved on anonymous ftp-servers,
mail-boxes or BBS's.
The Copyright is still by the Author.
You may use the source for your own non-commercial purposes, but you are
not allowed to spread a changed version under the same name. If you think
you have made a useful change contact me, so I may include it.
REQUIREMENTS:
Kickstart 2.04 (V37) or higher
PREFACE:
Coming with 2.0 you can make screens bigger than the visual size of your
monitor. After I tried to catch windows like requesters etc. on my
double-sized workbench, I got enough and wrote this little tool.
It hangs itself into the VBI to find out which window in being
activated and moves the screen to show the window in full view.
Huntwindows also checks the actual window to be moved to a different
location or change size and will adjust the screen to match the changed
window.
Additionally there are some other related features like remembering
and activating one window for each screen or bring the window or screen
being activated to front.
For full user-comfort, coming with version 2.0, Huntwindows is now a
commodity and can placed into your WBStartup Drawer and has a Graphical
User Interface.
USAGE:
Template:
MOVE/S,SFRONT/S,WFRONT/S,DEFPUB/S,REMWIN/S,MOVEMOUSE/S,CX_POPUP/S,RESTRICT/S,
WBWIN/S,CX_PRIORITY/K,CX_POPKEY/K,HADJ/K,VADJ/K,SCREEN/K,WINDOW/K,
ACTIONKEY/K,ACTION/K,DELAY/K,LWINDOW/K,NWINDOW/K:
or the same options as worbench tooltypes (if no default values are
mentioned, then giving the tooltype turn on, leaving it away turns it off)
MOVE:
Enable ScreenMove() whenever a window is actived - this option should
always be given, because it's the main purpose of the program.
SFRONT:
Enable the ScreenToFront() whenever a window is activated
WFRONT:
Do an additional WindowToFront() for windows being activated.
DEFPUB:
If the Intuition FirstScreen is a PublicScreen it will automaticly set as
DefaultPubScreen, so all windows opening on the default will use the
FirstScreen.
REMWIN:
Remember the ActiveWindow for every screen. When switching through the
screens Huntwindows will activate the last window that was active when it
was the FirstScreen. A maximum of 64 different screens will be remembered
- that should be enough, right?
This option was based on TWA by Matthias Scheler.
MOVEMOUSE:
When you try to click on a close-gadget (or any other) of a window that is
not completely visible, Huntwindows will move the window to show it
completely before you have time to release the button and activate it. When
this option is set Huntwindows will move the mouse with the screen, so it
still is at the same position as before, and the window will really close
(or whatever).
This movement will only take place if the mouse was on a position that was
already visible before scrolling - otherwise no mouse move will occur.
CX_POPUP:
Show the Graphical User Interface on startup.
The Interface will be automaticly shown, if Huntwindows is already running.
RESTRICT:
Often the only thing you want to exclude by the ScreenPattern is that
Screens are set to Default PubScreen. If the RESTRICT option is giving, the
ScreenPattern only turn off the Set Default PubScreen switch on that
particular screen and leaves everything else working.
WBWIN:
Workbench drawers cannot be excluded by a pattern easily because they
have very variable names. When this option is set no actions will be
performed on Workbench drawers.
CX_PRIORITY=<signed integer> (Default 0)
Set the commodity priority. This is the only function which can't be
changed from the GUI. It will naturally be saved anyway. To edit it you
have to use the workbench to directly change the tooltype.
CX_POPKEY=<standard key description> (Default: control alt h)
Sets the Popup-hotkey for the GUI. By pressing this key-combination, the
GUI will pop open.
HADJ=<a>: (only the first letter of the string is significant, Default "l" )
Horizontal Adjustment:
l : Left - means that IF scrolling is necessary, huntwindows will try to
get the window adjusted to the left edge of the screen
r : Same as above with the right edge
c : Same as above but centering in the screen
Everything else will switch the adjustment off
VADJ=<a>: (only the first letter of the string is significant, Default "t" )
Horizontal Adjustment:
t : Top - means that IF scrolling is necessary, huntwindows will try to
get the window adjusted to the top edge of the screen
b : Same as above with the buttom edge
c : Same as above but centering in the screen
Everything else will switch the adjustment off
SCREEN=<pattern> (Default no pattern)
All actions will only take place if the DefaultTitle of the actual screen
matches to the given pattern. If no pattern is given, all screens match.
If you only want to exclude some screens, simply negate the pattern.
For example: SCREEN=~(myscreen#?)
The patternmatching is case insensitive.
WINDOW=<pattern> (Default no pattern)
Same as screen, but checks the Title of the window that is going to be
processed.
ACTIONKEY=<standard key description> (Default: control help)
Pressing the hotkey defined here, Huntwindows will perform an action
without a activation or screenchange taken place. Very helpful if you
scrolled around and want to find back to your active window.
ACTION=<a> (only the first letter of the string is significant, Default "n")
n : necessary - Huntwindows will do actions as ever it finds it necessary
(which is windowactivation and screenchange for now)
h : hotkey - Huntwindows will only do actions when the ACTIONKEY is
pressed.
a : always - Will also do adjustment when the window is already
completely visible. This will only perform an action if
VADJ or HADJ is set different to 'off'.
DELAY=<integer> (Default: 0)
This will make Huntwindows wait given 1/50th of a second after the last
activation or screenchange before doing anything to prevent hopping around
with autopoint or other fast changes that do not need to cause an action.
LWINDOW=<standard key description> (Default: lcommand left)
Huntwindows will remember the window that was previously activated and
re-activate it on pressing the specified hotkey. If this window is
no longer opened or patterned out nothing will happen. Pressing the
hotkey again and again will jump between the active and the previously
window.
NWINDOW=<standard key description> (Default: lcommand right)
This hotkey jumps to the next window chained to the active window.
Pressing the hotkey again and again will cycle through all windows on the
screen. I don't think a previous window key is necessary (too many
hotkeys already).
From CLI you will have to start the program in the background via
run <nil: >nil: huntwindows [options]
or whatever you like. If you want to quit Huntwindows simply break the
task or quit it with the "Exchange" Commodity Program or from the GUI.
From Workbench adjust the tooltypes and simply start by double-clicking.
THE GRAPHICAL USER INTERFACE:
By defining CX_POPUP, by starting Huntwindows a second time or by using
"Show Interface" from the "Exchange" Commodity Program or by simply
pressing the popup hotkey a GUI comes up.
All options and tooltypes can be changed here. So you can play around to
find out your configuration. If you already have placed Huntwindows in your
wbstartup-drawer you may simply click "Save" to add all your options as
tooltypes to the icon. When starting from CLI, the "Save"-gadget will be
disabled. All options matching the default-value will not be entered when
saving.
The tooltype "DONOTWAIT", which is necessary when placing Huntwindows into
wbstartup is automaticly added on saving as is CX_PRIORITY if not default.
When changing the pattern from the GUI, a check will be done when you press
return. If there is an error in the pattern, a requester comes up and tells
you so. If you do not re-edit the pattern until it is ok, it will match
nothing, which is equal to disabling Huntwindows.
THANX TO:
-Michael Suelmann for help with the workbench/gadtools
-Markus 'ill' Illenseer for ideas and Aswarm (where I looked up how to do
commodities)
-Georg 'Gucky' Hessmann and Matthias 'Tron' Scheler for the idea with the
REMWIN option.
-Bernhard 'ZZA' Möllemann for testing and help.
-Stefan Sticht for help.
-Olaf 'MagicOlf' Peters for finding V37-bugs.
-Franz Schwarz for finding bugs and suggestions.
-Dale D. Snell for the nice icon.
TECHNICAL:
For reaching this Huntwindows installs a Vertical-Blank interrupt-server,
which tests if the ActiveWindow and the FirstScreen recorded by intuition
differs from the last interrupt and then signals the main-task to move the
display.
Don't mind it taking away too much CPU time - if you have a look at the
source at label 'Interrupt3' you will find that it doesn't do anyhing that
is worth arguing about.
Partly this also could be done from an inputevent-handler which records the
intui-messages, but this doesn't solve the Firstscreen-problem and would
require major changes of the code.
TODO:
Waiting for any further suggestions from you!
BUGS:
none - I hope.
For problems and ideas, reach me at:
EMAIL: bublath@forwiss.uni-passau.de
IRC : Skull (to be found on #amigager - the german amiga channel)
SMAIL: Jörg Bublath
Holzheimerstr. 4/E07
8390 Passau
Germany
Phone: Germany-0851-59947